package com.telchina.workorder.controller;

import com.telchina.common.core.controller.BaseController;
import com.telchina.common.core.domain.AjaxResult;
import com.telchina.workorder.domain.vo.analysis.WoStatisticAnalysisReqVO;
import com.telchina.workorder.service.IWoStatisticAnalysisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * 工单数据统计分析
 *
 * @author konghao
 * @date 2023-03-27
 */
@RestController
@RequestMapping("/workorder/analysis")
public class WoStatisticAnalysisController extends BaseController {
    @Autowired
    private IWoStatisticAnalysisService woStatisticAnalysisService;

    /**
     * 统计每日的工单数据情况，包含
     * 今日工单量
     * 今日结单量
     * 延期工单量
     * 投诉工单量
     * 督办工单量
     * 不计考核工单量
     */
    @GetMapping("/getCount")
    public AjaxResult getCount() {
        return woStatisticAnalysisService.getCount();
    }

    /**
     * 工单处理量统计  主要实现按照责任单位、故障类别统计工单数量，并可以同比及环比历史数据
     */
    @PostMapping("/throughput")
    public AjaxResult throughput(@RequestBody WoStatisticAnalysisReqVO woStatisticAnalysisReqVO) {
        return woStatisticAnalysisService.throughput(woStatisticAnalysisReqVO);
    }


    /**
     * 工单处理量统计  主要实现按来源、故障类别统计工单数量，并可以同比及环比历史数据
     */
    @PostMapping("/throughputSource")
    public AjaxResult throughputSource(@RequestBody WoStatisticAnalysisReqVO woStatisticAnalysisReqVO) {
        return woStatisticAnalysisService.throughputSource(woStatisticAnalysisReqVO);
    }

    /**
     * 回访满意度统计 实现基于责任单位、故障类别等工单的回访满意度统计分析。
     */
    @PostMapping("/satisfaction")
    public AjaxResult satisfaction(@RequestBody WoStatisticAnalysisReqVO woStatisticAnalysisReqVO) {
        return woStatisticAnalysisService.satisfaction(woStatisticAnalysisReqVO);
    }

    /**
     * 工单量对比统计
     * 统计项目包括：电话总数，上月电话总数，电话总数环比，工单总数，上月工单总数，
     * 工单总数环比，本月派单不考核数，本月派单数，上月派单数，派单数环比，本月派单完成数，
     * 本月处结率，本月及时完成数，本月及时率，并单数
     */
    @PostMapping("/comparison")
    public AjaxResult comparison(@RequestBody WoStatisticAnalysisReqVO woStatisticAnalysisReqVO) {
        return woStatisticAnalysisService.comparison(woStatisticAnalysisReqVO);
    }

    /**
     * 工单位置分布接口 在地图上展示工单分布情况
     */
    @PostMapping("/distribute")
    public AjaxResult distribute(@RequestBody WoStatisticAnalysisReqVO woStatisticAnalysisReqVO) {
        return woStatisticAnalysisService.distribute(woStatisticAnalysisReqVO);
    }


}
